perm filename DDTEST.FAI[D,SYS] blob sn#226340 filedate 1976-07-17 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE DDTEST
C00008 ENDMK
C⊗;
TITLE DDTEST

A←1
B←2
C←3
D←4
E←5
F←6
CNT←7
MAX←10

P←17

APR←←0
PI←←4
KLPAG←←10
CCA←←14
TIM←←20
DPY←430
DDD←510
MPX←530
VDS←340
DTE0←←200

;KL10 PARAMETERS, ETC.
SWEEPB←←200000				;KL10 APR CONI BIT - SWEEP BUSY
DTFLG←←444		;DTE20 OPERATION COMPLETE FLAG
DTF11←←450		;      FROM 11 ARGUMENT
DTCMD←←451		;      TO 11 COMMAND
DONG11←←20000				;DTE CONO BIT.  REQUEST 11 INTERRUPT

;CONI MPX,E
MBUSY←←100		;BUSY
MINT←←40		;INTERRUPTING
MNXM←←20		;NXM
MPARER←←10		;PARITY ERROR
;7 IS PIA

DEFINE CMDW (O1,D1,O2,D2,O3,D3) <
	BYTE (8)D1,D2,D3 (3)O1,O2,O3,4
>
DEFINE LVW (X,Y,BRT,SIZE,M,T) <
	BYTE (11)<X>,<Y> (3)BRT,SIZE (2)M,T (4) 6
>
DEFINE SEL (N) <
	BYTE (12)4000⊗<-N>,¬<4000⊗<-N>>,10
>

LOC 74
	JRST DDT↑

LOC 200
	JRST GO
	JRST DDT

LOC 1000
GO:	MOVE P,[-20,,PDL-1]
	CONO APR,200000		;I/O RESET
	CONO PI,10400		;FLUSH PIS
	CONSZ APR,SWEEPB	;WAIT FOR SWEEP BUSY TO FALL
	JRST .-1
	CONSO KLPAG,600000	;IS THE CACHE ON ALREADY?
	JRST SWP0		;NO.
	BLKO CCA,		;VALIDATE CORE
	CONSZ APR,SWEEPB
	JRST .-1
SWP0:	CONO KLPAG,0		;TURN OFF CACHE.  EPT TO PAGE ZERO.  TURN OFF MAP
	DATAI CCA,0		;SWEEP CACHE.  INVALIDATE ALL.
	CONSZ APR,SWEEPB	;WAIT FOR SWEEP BUSY TO FALL
	JRST .-1
	CONSZ MPX,MBUSY
	JRST .-1

REPEAT 0,<
	CONO VDS,7
	DATAO VDS,[SETZ]
	CONO VDS,6
	DATAO VDS,[SETZ]	;SELECT CHANNEL 0 FOR 26 AND 27
	CONO DDD,10		;RESET DATA DISK
	CONO DDD,120		;SET DDGO, FORCE FIELD
	DATAO DDD,[DDERAS]	;ERASE
	CONSO DDD,10		;HALTED
	JRST .-1
	MOVEI MAX,0
LP:	SETZM F,CNT
	CONO DDD,10		;RESET
	CONO DDD,100		;SET DDGO
LP1:	DATAO DDD,[DDPROG]	;START THE BUGGER
	CONO TIM,460000		;CLEAR UP COUNTER AND DONE AND OVFL. PERIOD←0
LP2:	CONSZ DDD,2210		;NXM,LATE,OR HALT?
	JRST DDINT
	CONSO TIM,20000		;INTERVAL TIMER DONE?
	JRST LP2		;NO
	ADDI CNT,10000		;HAVE OVERFLOWED 12 BITS
	CONO TIM,20000		;CLEAR INTERVAL DONE AND OVERFLOW
	JRST LP2		;NO

DDINT:	CONI TIM,A		;GET UP COUNTER IN BITS 6-17
	LDB A,[POINT 12,A,17]	;EXTRACT UP COUNTER
	ADD CNT,A
	CAMLE CNT,MAX
	MOVE MAX,CNT
	CONSO DDD,10
	JRST LPLOSE
	TRCN F,1
	JRST LP1		;RUN THE OTHER FIELD
BPT:	JRST LP

LPLOSE:	MOVEI C,7
	PUSHJ P,KLTYO
	JRST LP

DDERAS:	CMDW(1,17,2,0,1,46)
	0

DDPROG:	CMDW(1,46,2,0,3,2)
	CMDW(3,2,4,10,5,0)
	ASCID /ABCDE
/
DDEND:	0
	REPEAT 100,<0>
>;REPEAT 0

	CONO VDS,7
	DATAO VDS,[SETZ]
	CONO VDS,6
	DATAO VDS,[SETZ]	;SELECT CHANNEL 0 FOR 26 AND 27
RELOOP:	PUSHJ P,DDSTRT
LOOP1:	PUSHJ P,DPSTRT
LOOP:	CONSZ MPX,MINT		;IS MPX INTERRUPTING?
	JRST MSERV		;YES
	CONSZ DDD,10		;DATA DISK HALTED?
	JRST DDHLT		;YES
	CONSO DPY,400000	;III HALTED?
	JRST LOOP		;NO
	JRST LOOP1

DDHLT:	PUSHJ P,DDSTRT
	JRST LOOP

MSERV:	CONO APR,200000		;RESET THE WORLD
	CONSZ MPX,MBUSY
	JRST .-1
	JRST RELOOP

DDSTRT:	CONO DDD,10		;RESET
	CONO DDD,100		;SET DDGO
	DATAO DDD,[DDPROG]	;START THE DATA DISK UP
	POPJ P,

DPSTRT:	DATAO DPY,[IIIPRG,,20]	;GIVE THE III IT'S CHANCE
	CONO DPY,40		;AND LET IT CONTINUE
	POPJ P,

PDL:	BLOCK 20
PATCH:	BLOCK 100

DDPROG:
	CMDW(1,46,2,0,3,2)
	CMDW(3,2,4,10,5,0)
	ASCID /HERE IS SOME TEXT FOR THE PURPOSE OF FILLING UP
SOME PART OF A DATADISK SCREEN.  ANY UNAUTHORIZED USE OF THIS BROADCAST
WITHOUT THE EXPRESS WRITTEN CONSENT OF THE KL10 IS STRICTLY PROHIBITED.
/
	0
REPEAT 100,<0>

IIIPRG:	SEL (0)
	LVW (-500,500,4,3,1,2)
	ASCID /HERE IS SOME TEXT FOR THE PURPOSE OF FILLING UP
SOME PART OF A DATADISK SCREEN.  ANY UNAUTHORIZED USE OF THIS BROADCAST
WITHOUT THE EXPRESS WRITTEN CONSENT OF THE KL10 IS STRICTLY PROHIBITED.
/
	0

	END GO